<!doctype html>
<html lang="zh-cn">
<head>

    <meta charset="utf-8">
    <meta name="generator" content="Hugo 0.57.2" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>C#语言从入门到入门 | The Sky of OtsWang</title>
    <meta property="og:title" content="C#语言从入门到入门 - The Sky of OtsWang">
    <meta property="og:type" content="article">
        
    <meta property="article:published_time" content="2019-09-06T10:01:41&#43;08:00">
        
        
    <meta property="article:modified_time" content="2019-09-06T10:01:41&#43;08:00">
        
    <meta name="Keywords" content="golang,go语言,otswang,java,博客,python">
    <meta name="description" content="C#语言从入门到入门">
        
    <meta name="author" content="OtsWang">
    <meta property="og:url" content="https://otswang.gitee.io/hugo/post/lang/csharpe_starter/">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

    <link rel="stylesheet" href="/hugo/css/normalize.css">
    
        <link rel="stylesheet" href="/hugo/css/prism.css">
    
    <link rel="stylesheet" href="/hugo/css/style.css">
    <script type="text/javascript" src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>

    


    
    
</head>

<body>
<header id="header" class="clearfix">
    <div class="container">
        <div class="col-group">
            <div class="site-name ">
                
                    <a id="logo" href="https://otswang.gitee.io/hugo/">
                        The Sky of OtsWang
                    </a>
                
                <p class="description">擅长写HelloWorld的小小码农</p>
            </div>
            <div>
                <nav id="nav-menu" class="clearfix">
                    
                    
                    <a  href="https://otswang.gitee.io/hugo/" title="Home">Home</a>
                    
                    <a  href="https://otswang.gitee.io/hugo/tags/" title="Tags">Tags</a>
                    
                    <a  href="https://otswang.gitee.io/hugo/categories/" title="Categories">Categories</a>
                    
                    <a  href="https://otswang.gitee.io/hugo/archives/" title="Archives">Archives</a>
                    
                    <a  href="https://otswang.gitee.io/hugo/about/" title="About">About</a>
                    
                </nav>
            </div>
        </div>
    </div>
</header>


<div id="body">
    <div class="container">
        <div class="col-group">

            <div class="col-8" id="main">
                <div class="res-cons">
                    <article class="post">
                        <header>
                            <h1 class="post-title">C#语言从入门到入门</h1>
                        </header>
                        <date class="post-meta meta-date">
                            2019年9月6日
                        </date>
                        
                        <div class="post-meta">
                            <span>|</span>
                            
                                <span class="meta-category"><a href="https://otswang.gitee.io/hugo/categories/%E5%B0%8F%E4%BC%97%E8%AF%AD%E8%A8%80%E4%B8%80%E7%9E%A5">小众语言一瞥</a></span>
                            
                        </div>
                        
                        
                        
                        <div class="post-content">
                            <p>项目中用到C#开发web程序，学习一下</p>

<h2 id="框架">框架</h2>

<pre><code class="language-c#">using System;

namespace csharpLearn01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(&quot;Hello World!&quot;);
            Console.ReadKey();
        }
    }
}
</code></pre>

<h2 id="数据类型">数据类型</h2>

<ul>
<li>基本数据类型</li>
<li>引用类型： <code>object</code>,<code>dynamic</code>,<code>String</code>，String中使用<code>@</code>表示原生类型</li>
<li>指针类型： 与C中的指针一样</li>
</ul>

<h2 id="封装">封装</h2>

<ul>
<li>public：所有对象都可以访问；</li>
<li>private：对象本身在对象内部可以访问；</li>
<li>protected：只有该类对象及其子类对象可以访问</li>
<li>internal：同一个程序集的对象可以访问；</li>
<li>protected internal：访问限于当前程序集或派生自包含类的类型。</li>
</ul>

<p>解读：</p>

<p>比如说：一个人A为父类，他的儿子B，妻子C，私生子D（注：D不在他家里）</p>

<p>如果我们给A的事情增加修饰符：</p>

<ul>
<li>public事件，地球人都知道，全公开</li>
<li>protected事件，A，B，D知道（A和他的所有儿子知道，妻子C不知道）</li>
<li>private事件，只有A知道（隐私？心事？）</li>
<li>internal事件，A，B，C知道（A家里人都知道，私生子D不知道）</li>
<li>protected internal事件，A，B，C，D都知道,其它人不知道</li>
</ul>

<h2 id="可空类型">可空类型</h2>

<p>？ 标识此变量可以为空， ？？ 标识当此变量为空时返回后面的值。</p>

<pre><code class="language-c#">class NullAbleTest
{
    public static void test()
    {
        int? a = null;
        int b = a ?? 2;
        int c = null;	// 编译报错

        Console.WriteLine(&quot;{0}, {1}, {3}&quot;, a, b, c);
    }
}
</code></pre>

<h2 id="结构体">结构体</h2>

<p>类和结构体的区别：</p>

<ul>
<li>类是引用类型，结构体是值类型</li>
<li>结构体不支持继承</li>
<li>结构不能声明默认的构造函数</li>
</ul>

<p>结构的特点：</p>

<ul>
<li>结构可带有方法、字段、索引、属性、运算符方法和事件。</li>
<li>结构可定义构造函数，但不能定义析构函数。但是，您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的，且不能被改变。</li>
<li>与类不同，结构不能继承其他的结构或类。</li>
<li>结构不能作为其他结构或类的基础结构。</li>
<li>结构可实现一个或多个接口。</li>
<li>结构成员不能指定为 abstract、virtual 或 protected。</li>
<li>当您使用 New 操作符创建一个结构对象时，会调用适当的构造函数来创建结构。与类不同，结构可以不使用 New 操作符即可被实例化。</li>
<li>如果不使用 New 操作符，只有在所有的字段都被初始化之后，字段才被赋值，对象才被使用。</li>
</ul>

<h2 id="继承">继承</h2>

<p>使用<code>:</code>来继承一个类。一个类可以派生自多个类或接口，这意味着它可以从多个基类或接口继承数据和函数。</p>

<p>但是，C# 不支持多重继承。</p>

<p>通过在类定义前面放置关键字 sealed，可以将类声明为密封类。当一个类被声明为 sealed 时，它不能被继承。抽象类不能被声明为 sealed。</p>

<p>C# 提供了两种技术来实现静态多态性。分别为：</p>

<ul>
<li>函数重载</li>
<li>运算符重载</li>
</ul>

<p>当有一个定义在类中的函数需要在继承类中实现时，可以使用虚方法。</p>

<p>虚方法是使用关键字 virtual 声明的。</p>

<p>虚方法可以在不同的继承类中有不同的实现。</p>

<p>对虚方法的调用是在运行时发生的。</p>

<p>动态多态性是通过 抽象类 和 虚方法 实现的。</p>

<h2 id="运算符重载">运算符重载</h2>

<table>
<thead>
<tr>
<th>运算符</th>
<th>描述</th>
</tr>
</thead>

<tbody>
<tr>
<td>+, -, !, ~, ++, &ndash;</td>
<td>这些一元运算符只有一个操作数，且可以被重载。</td>
</tr>

<tr>
<td>+, -, *, /, %</td>
<td>这些二元运算符带有两个操作数，且可以被重载。</td>
</tr>

<tr>
<td>==, !=, &lt;, &gt;, &lt;=, &gt;=</td>
<td>这些比较运算符可以被重载。</td>
</tr>

<tr>
<td>&amp;&amp;, 或运算符</td>
<td>这些条件逻辑运算符不能被直接重载。</td>
</tr>

<tr>
<td>+=, -=, *=, /=, %=</td>
<td>这些赋值运算符不能被重载。</td>
</tr>

<tr>
<td>=, ., ?:, -&gt;, new, is, sizeof, typeof</td>
<td>这些运算符不能被重载。</td>
</tr>
</tbody>
</table>
                        </div>

                        


                        


                        <div class="post-meta meta-tags">
                            
                            <ul class="clearfix">
                                
                                <li><a href="https://otswang.gitee.io/hugo/tags/c">c#</a></li>
                                
                            </ul>
                            
                        </div>
                    </article>
                    
    

    
    
                </div>
            </div>
            <div id="secondary">

    <section class="widget">
        <form id="search" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank" _lpchecked="1">
      
      <input type="text" name="q" maxlength="20" placeholder="Search">
      <input type="hidden" name="sitesearch" value="https://otswang.gitee.io/hugo/">
      <button type="submit" class="submit icon-search"></button>
</form>
    </section>

    
    <div class="clear">
        <div class="toc-article">
            <div class="toc-title">文章目录</dixsv>
            <nav id="TableOfContents">
<ul>
<li>
<ul>
<li><a href="#框架">框架</a></li>
<li><a href="#数据类型">数据类型</a></li>
<li><a href="#封装">封装</a></li>
<li><a href="#可空类型">可空类型</a></li>
<li><a href="#结构体">结构体</a></li>
<li><a href="#继承">继承</a></li>
<li><a href="#运算符重载">运算符重载</a></li>
</ul></li>
</ul>
</nav>
        </div>
    </div>
    

</div>
        </div>
    </div>
</div>
<footer id="footer">
    <div class="container">
        &copy; 2020 <a href="https://otswang.gitee.io/hugo/">The Sky of OtsWang By OtsWang</a>.
        Powered by <a rel="nofollow noreferer noopener" href="https://gohugo.io" target="_blank">Hugo</a>.
        <a href="https://www.flysnow.org/" target="_blank">Theme</a> based on <a href="https://github.com/Dudiao137/maupassant-hugo" target="_blank">maupassant-ots</a>.
        
    </div>
</footer>


    <script type="text/javascript">
    
    (function(){
        $("pre code").parent().addClass("line-numbers")
    }())

    window.MathJax = {
        tex2jax: {
            inlineMath: [ ['$','$'] ],
            processEscapes: true
        }
    };
    </script>
    <script type="text/javascript" src="/hugo/js/prism.js" async="true"></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>

<a id="rocket" href="#top"></a>
<script type="text/javascript" src="/hugo/js/totop.js?v=0.0.0" async=""></script>







 
 <script src="https://mermaidjs.github.io/scripts/mermaid.min.js"></script>
 <script>
       mermaid.initialize({ startOnLoad: true });
 </script>
</body>
</html>
